<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8" />
		<title>1.回忆Object.defineProperty</title>
	</head>
	<body>
		<script type="text/javascript" >
			let number = 18

			let person = {
				name:'强哥',
				sex:'女'
			}

			// 使用点语法，直接给person追加age属性
			// person.age = 18 //的确追加了age，但无法进行“高级定制”

			// 使用defineProperty，给person追加age属性
			/* Object.defineProperty(person,'age',{
				value:18, //指定属性值
				enumerable:true, //控制属性是否可以枚举，默认值false
				configurable:true,//控制属性是否可以删除，默认值false
				writable:true //控制属性是否可以修改，默认值false
			}) */
				
			Object.defineProperty(person,'age',{
				enumerable:true, //控制属性是否可以枚举，默认值false
				configurable:true,//控制属性是否可以删除，默认值false
				/* 
					1.get函数何时调用？ —— 当有人读取person.age时。
					2.get函数中的返回值有何作用？ —— 就是person.age的值。
					3.get函数中的this是谁？ —— 当前操作的对象（person）。
				*/
				get(){
					console.log('get函数被调用了')
					return number
				},
				/* 
					1.set函数何时调用？ —— 当有人修改person.age时。
					2.set函数无需返回值，但set函数会收到新值。
					3.set函数中的this是谁？ —— 当前操作的对象（person）。
				*/
				set(value){
					console.log('set函数被调用了')
					number = value
				}
			})


			/* for (let key in person){
				console.log(key)
			} */
			

		</script>
	</body>
</html>